/*
  ==============================================================================

  This is an automatically generated file created by the Jucer!

  Creation date:  9 Jun 2008 12:01:05 pm

  Be careful when adding custom code to these files, as only the code within
  the "//[xyz]" and "//[/xyz]" sections will be retained when the file is loaded
  and re-saved.

  Jucer version: 1.11

  ------------------------------------------------------------------------------

  The Jucer is part of the JUCE library - "Jules' Utility Class Extensions"
  Copyright 2004-6 by Raw Material Software ltd.

  ==============================================================================
*/

//[Headers] You can add your own extra header files here...
//[/Headers]

#include "FileDropTargetComponent.h"


//[MiscUserDefs] You can add your own user definitions and misc code here...
//[/MiscUserDefs]

//==============================================================================
FileDropTargetComponent::FileDropTargetComponent (KetonalConfig *_c)
    : kbpsLabel (0),
      configName (0),
      stopButton (0),
      internalCachedImage1 (0),
      internalCachedImage2 (0)
{
    addAndMakeVisible (kbpsLabel = new Label (T("KBPS"),
                                              String::empty));
    kbpsLabel->setFont (Font (12.0000f, Font::bold));
    kbpsLabel->setJustificationType (Justification::centredLeft);
    kbpsLabel->setEditable (false, false, false);
    kbpsLabel->setColour (Label::textColourId, Colour (0xff2c57ad));
    kbpsLabel->setColour (TextEditor::textColourId, Colours::black);
    kbpsLabel->setColour (TextEditor::backgroundColourId, Colour (0x0));

    addAndMakeVisible (configName = new Label (T("Name"),
                                               T("http://atom.maczo.pl")));
    configName->setTooltip (T("Name"));
    configName->setFont (Font (11.0000f, Font::plain));
    configName->setJustificationType (Justification::centredLeft);
    configName->setEditable (false, false, false);
    configName->setColour (Label::textColourId, Colour (0xff252525));
    configName->setColour (TextEditor::textColourId, Colours::black);
    configName->setColour (TextEditor::backgroundColourId, Colour (0x0));

    addAndMakeVisible (stopButton = new ImageButton (T("Stop")));
    stopButton->setTooltip (T("Stop"));
    stopButton->setButtonText (T("new button"));
    stopButton->addButtonListener (this);

    stopButton->setImages (false, true, true,
                           ImageCache::getFromMemory (stop_png, stop_pngSize), 0.5660f, Colour (0x0),
                           ImageCache::getFromMemory (stop_png, stop_pngSize), 1.0000f, Colour (0x0),
                           0, 1.0000f, Colour (0x0));
    internalCachedImage1 = ImageCache::getFromMemory (iPhone_blank_8_png, iPhone_blank_8_pngSize);
    internalCachedImage2 = ImageCache::getFromMemory (blank_png, blank_pngSize);

    //[UserPreSize]
	uploadThread = 0;
	progressPercent = 0;
	config = _c;

	progress = new CircularProgress(progressPercent);
	progress->setBounds (25,8,128-48,128-58);
	addAndMakeVisible (progress);

	tPrev = tNow = 0;
	ulPrev = 0;

	configName->setText (config->getUrl(), false);

	if (config->getImage())
	{
		internalCachedImage2 = config->getImage();
	}
    //[/UserPreSize]

    setSize (128, 128);

    //[Constructor] You can add your own custom stuff here..
    //[/Constructor]
}

FileDropTargetComponent::~FileDropTargetComponent()
{
    //[Destructor_pre]. You can add your own custom destruction code here..
	if (uploadThread)
	{
		uploadThread->stopThread (500);
		deleteAndZero (uploadThread);
	}
    //[/Destructor_pre]

    deleteAndZero (kbpsLabel);
    deleteAndZero (configName);
    deleteAndZero (stopButton);
    ImageCache::release (internalCachedImage1);
    ImageCache::release (internalCachedImage2);

    //[Destructor]. You can add your own custom destruction code here..

    //[/Destructor]
}

//==============================================================================
void FileDropTargetComponent::paint (Graphics& g)
{
    //[UserPrePaint] Add your own custom painting code here..
    //[/UserPrePaint]

    g.setColour (Colours::black);
    g.drawImage (internalCachedImage1,
                 0, 0, 128, 128,
                 0, 0, internalCachedImage1->getWidth(), internalCachedImage1->getHeight());

    g.setColour (Colours::black.withAlpha (0.6350f));
    g.drawImage (internalCachedImage2,
                 32, 10, 64, 64,
                 0, 0, internalCachedImage2->getWidth(), internalCachedImage2->getHeight());

    //[UserPaint] Add your own custom painting code here..
    //[/UserPaint]
}

void FileDropTargetComponent::resized()
{
    kbpsLabel->setBounds (16, 104, 72, 8);
    configName->setBounds (8, 80, 112, 8);
    stopButton->setBounds (96, 99, 16, 16);
    //[UserResized] Add your own custom resize handling here..
    //[/UserResized]
}

void FileDropTargetComponent::buttonClicked (Button* buttonThatWasClicked)
{
    //[UserbuttonClicked_Pre]
    //[/UserbuttonClicked_Pre]

    if (buttonThatWasClicked == stopButton)
    {
        //[UserButtonCode_stopButton] -- add your button handler code here..
		if (uploadThread->isThreadRunning())
		{
			uploadThread->signalThreadShouldExit ();
		}
        //[/UserButtonCode_stopButton]
    }

    //[UserbuttonClicked_Post]
    //[/UserbuttonClicked_Post]
}



//[MiscUserCode] You can add your own definitions of your custom methods or any other code here...
void FileDropTargetComponent::mouseOver()
{
	// imageButton->setState (Button::buttonOver);
}

void FileDropTargetComponent::mouseOut()
{
	// imageButton->setState (Button::buttonNormal);
}

void FileDropTargetComponent::uploadFiles (StringArray f)
{
	if (uploadThread && !uploadThread->isThreadRunning())
	{
		progressPercent = 0;
		uploadThread->setFile (File(f[0]));
		uploadThread->startThread();
	}
	else
	{
		uploadThread = new UploadThread (config, File(f[0]), this);
		uploadThread->startThread();
	}
}

int FileDropTargetComponent::uploadProgressCallback (double dltotal, double dlnow, double ultotal, double ulnow)
{
	const MessageManagerLock mmLock;

	if (uploadThread->threadShouldExit())
	{
		return (1);
	}

	tNow = Time::getMillisecondCounter();

	float a = ((float)ulnow - (float)ulPrev) / 1024;
	float b = ((float)tNow - (float)tPrev);

	if (b < 500)
	{
		return (0);
	}
	else
	{
		b = b / 1000;
	}

	float kbps = a/b;

	if (kbps <= 0)
		kbps = 0;

	kbpsLabel->setText (String::formatted (T("%.2f k/s"), kbps), false);

	progressPercent = (ulnow / ultotal) * 100;

	ulPrev = ulnow;
	tPrev = tNow;
	return (0);
}

void FileDropTargetComponent::uploadEnded (bool f, String s)
{
	const MessageManagerLock mmLock;
	if (f)
	{
		progressPercent = 0;
		kbpsLabel->setText (T("done"), false);
	}
	else
	{
		progressPercent = 0;
		kbpsLabel->setText (T("failed"), false);
	}
}

void FileDropTargetComponent::mouseDrag (const MouseEvent& e)
{
	myDragger.dragComponent (getParentComponent(), e);
}

void FileDropTargetComponent::mouseDown (const MouseEvent& e)
{
	myDragger.startDraggingComponent (getParentComponent(), 0);

	if (e.mods.isPopupMenu())
	{
		PopupMenu m;
        m.addItem (1, "Save Position", true, false);

		m.addSeparator();

		if (uploadThread)
		{
			if (uploadThread->isThreadRunning())
				m.addItem (2, "Hide", false, false);
			else
				m.addItem (2, "Hide", true, false);
		}
		else
		{
			m.addItem (2, "Hide", true, false);
		}

        const int result = m.show();

		if (result == 1)
		{
			savePosition();
        }
		else if (result == 2)
		{
		}
	}
}

void FileDropTargetComponent::savePosition()
{
	config->setPosition (getBounds());
}
//[/MiscUserCode]


//==============================================================================
#if 0
/*  -- Jucer information section --

    This is where the Jucer puts all of its metadata, so don't change anything in here!

BEGIN_JUCER_METADATA

<JUCER_COMPONENT documentType="Component" className="FileDropTargetComponent"
                 componentName="" parentClasses="public Component, public FileUploadListener"
                 constructorParams="KetonalConfig *_c" variableInitialisers=""
                 snapPixels="8" snapActive="1" snapShown="1" overlayOpacity="0.330000013"
                 fixedSize="1" initialWidth="128" initialHeight="128">
  <BACKGROUND backgroundColour="ffffff">
    <IMAGE pos="0 0 128 128" resource="iPhone_blank_8_png" opacity="1" mode="0"/>
    <IMAGE pos="32 10 64 64" resource="blank_png" opacity="0.635" mode="0"/>
  </BACKGROUND>
  <LABEL name="KBPS" id="de85d7faf688a392" memberName="kbpsLabel" virtualName=""
         explicitFocusOrder="0" pos="16 104 72 8" textCol="ff2c57ad" edTextCol="ff000000"
         edBkgCol="0" labelText="" editableSingleClick="0" editableDoubleClick="0"
         focusDiscardsChanges="0" fontname="Default font" fontsize="12"
         bold="1" italic="0" justification="33"/>
  <LABEL name="Name" id="403809718dec0970" memberName="configName" virtualName=""
         explicitFocusOrder="0" pos="8 80 112 8" tooltip="Name" textCol="ff252525"
         edTextCol="ff000000" edBkgCol="0" labelText="http://atom.maczo.pl"
         editableSingleClick="0" editableDoubleClick="0" focusDiscardsChanges="0"
         fontname="Default font" fontsize="11" bold="0" italic="0" justification="33"/>
  <IMAGEBUTTON name="Stop" id="3bb3077ba2c980bc" memberName="stopButton" virtualName=""
               explicitFocusOrder="0" pos="96 99 16 16" tooltip="Stop" buttonText="new button"
               connectedEdges="0" needsCallback="1" radioGroupId="0" keepProportions="1"
               resourceNormal="stop_png" opacityNormal="0.566037714" colourNormal="0"
               resourceOver="stop_png" opacityOver="1" colourOver="0" resourceDown=""
               opacityDown="1" colourDown="0"/>
</JUCER_COMPONENT>

END_JUCER_METADATA
*/
#endif

//==============================================================================
// Binary resources - be careful not to edit any of these sections!

// JUCER_RESOURCE: iPhone_blank_8_png, 11669, "C:\iPhone_BLANK_8.png"
static const unsigned char resource_FileDropTargetComponent_iPhone_blank_8_png[] = { 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,0,128,0,0,0,128,8,6,0,0,0,195,62,97,203,0,0,10,79,105,67,67,80,80,
104,111,116,111,115,104,111,112,32,73,67,67,32,112,114,111,102,105,108,101,0,0,120,218,157,83,103,84,83,233,22,61,247,222,244,66,75,136,128,148,75,111,82,21,8,32,82,66,139,128,20,145,38,42,33,9,16,74,
136,33,161,217,21,81,193,17,69,69,4,27,200,160,136,3,142,142,128,140,21,81,44,12,138,10,216,7,228,33,162,142,131,163,136,138,202,251,225,123,163,107,214,188,247,230,205,254,181,215,62,231,172,243,157,
179,207,7,192,8,12,150,72,51,81,53,128,12,169,66,30,17,224,131,199,196,198,225,228,46,64,129,10,36,112,0,16,8,179,100,33,115,253,35,1,0,248,126,60,60,43,34,192,7,190,0,1,120,211,11,8,0,192,77,155,192,
48,28,135,255,15,234,66,153,92,1,128,132,1,192,116,145,56,75,8,128,20,0,64,122,142,66,166,0,64,70,1,128,157,152,38,83,0,160,4,0,96,203,99,98,227,0,80,45,0,96,39,127,230,211,0,128,157,248,153,123,1,0,91,
148,33,21,1,160,145,0,32,19,101,136,68,0,104,59,0,172,207,86,138,69,0,88,48,0,20,102,75,196,57,0,216,45,0,48,73,87,102,72,0,176,183,0,192,206,16,11,178,0,8,12,0,48,81,136,133,41,0,4,123,0,96,200,35,35,
120,0,132,153,0,20,70,242,87,60,241,43,174,16,231,42,0,0,120,153,178,60,185,36,57,69,129,91,8,45,113,7,87,87,46,30,40,206,73,23,43,20,54,97,2,97,154,64,46,194,121,153,25,50,129,52,15,224,243,204,0,0,160,
145,21,17,224,131,243,253,120,206,14,174,206,206,54,142,182,14,95,45,234,191,6,255,34,98,98,227,254,229,207,171,112,64,0,0,225,116,126,209,254,44,47,179,26,128,59,6,128,109,254,162,37,238,4,104,94,11,
160,117,247,139,102,178,15,64,181,0,160,233,218,87,243,112,248,126,60,60,69,161,144,185,217,217,229,228,228,216,74,196,66,91,97,202,87,125,254,103,194,95,192,87,253,108,249,126,60,252,247,245,224,190,
226,36,129,50,93,129,71,4,248,224,194,204,244,76,165,28,207,146,9,132,98,220,230,143,71,252,183,11,255,252,29,211,34,196,73,98,185,88,42,20,227,81,18,113,142,68,154,140,243,50,165,34,137,66,146,41,197,
37,210,255,100,226,223,44,251,3,62,223,53,0,176,106,62,1,123,145,45,168,93,99,3,246,75,39,16,88,116,192,226,247,0,0,242,187,111,193,212,40,8,3,128,104,131,225,207,119,255,239,63,253,71,160,37,0,128,102,
73,146,113,0,0,94,68,36,46,84,202,179,63,199,8,0,0,68,160,129,42,176,65,27,244,193,24,44,192,6,28,193,5,220,193,11,252,96,54,132,66,36,196,194,66,16,66,10,100,128,28,114,96,41,172,130,66,40,134,205,176,
29,42,96,47,212,64,29,52,192,81,104,134,147,112,14,46,194,85,184,14,61,112,15,250,97,8,158,193,40,188,129,9,4,65,200,8,19,97,33,218,136,1,98,138,88,35,142,8,23,153,133,248,33,193,72,4,18,139,36,32,201,
136,20,81,34,75,145,53,72,49,82,138,84,32,85,72,29,242,61,114,2,57,135,92,70,186,145,59,200,0,50,130,252,134,188,71,49,148,129,178,81,61,212,12,181,67,185,168,55,26,132,70,162,11,208,100,116,49,154,143,
22,160,155,208,114,180,26,61,140,54,161,231,208,171,104,15,218,143,62,67,199,48,192,232,24,7,51,196,108,48,46,198,195,66,177,56,44,9,147,99,203,177,34,172,12,171,198,26,176,86,172,3,187,137,245,99,207,
177,119,4,18,129,69,192,9,54,4,119,66,32,97,30,65,72,88,76,88,78,216,72,168,32,28,36,52,17,218,9,55,9,3,132,81,194,39,34,147,168,75,180,38,186,17,249,196,24,98,50,49,135,88,72,44,35,214,18,143,19,47,16,
123,136,67,196,55,36,18,137,67,50,39,185,144,2,73,177,164,84,210,18,210,70,210,110,82,35,233,44,169,155,52,72,26,35,147,201,218,100,107,178,7,57,148,44,32,43,200,133,228,157,228,195,228,51,228,27,228,
33,242,91,10,157,98,64,113,164,248,83,226,40,82,202,106,74,25,229,16,229,52,229,6,101,152,50,65,85,163,154,82,221,168,161,84,17,53,143,90,66,173,161,182,82,175,81,135,168,19,52,117,154,57,205,131,22,73,
75,165,173,162,149,211,26,104,23,104,247,105,175,232,116,186,17,221,149,30,78,151,208,87,210,203,233,71,232,151,232,3,244,119,12,13,134,21,131,199,136,103,40,25,155,24,7,24,103,25,119,24,175,152,76,166,
25,211,139,25,199,84,48,55,49,235,152,231,153,15,153,111,85,88,42,182,42,124,21,145,202,10,149,74,149,38,149,27,42,47,84,169,170,166,170,222,170,11,85,243,85,203,84,143,169,94,83,125,174,70,85,51,83,227,
169,9,212,150,171,85,170,157,80,235,83,27,83,103,169,59,168,135,170,103,168,111,84,63,164,126,89,253,137,6,89,195,76,195,79,67,164,81,160,177,95,227,188,198,32,11,99,25,179,120,44,33,107,13,171,134,117,
129,53,196,38,177,205,217,124,118,42,187,152,253,29,187,139,61,170,169,161,57,67,51,74,51,87,179,82,243,148,102,63,7,227,152,113,248,156,116,78,9,231,40,167,151,243,126,138,222,20,239,41,226,41,27,166,
52,76,185,49,101,92,107,170,150,151,150,88,171,72,171,81,171,71,235,189,54,174,237,167,157,166,189,69,187,89,251,129,14,65,199,74,39,92,39,71,103,143,206,5,157,231,83,217,83,221,167,10,167,22,77,61,58,
245,174,46,170,107,165,27,161,187,68,119,191,110,167,238,152,158,190,94,128,158,76,111,167,222,121,189,231,250,28,125,47,253,84,253,109,250,167,245,71,12,88,6,179,12,36,6,219,12,206,24,60,197,53,113,111,
60,29,47,199,219,241,81,67,93,195,64,67,165,97,149,97,151,225,132,145,185,209,60,163,213,70,141,70,15,140,105,198,92,227,36,227,109,198,109,198,163,38,6,38,33,38,75,77,234,77,238,154,82,77,185,166,41,
166,59,76,59,76,199,205,204,205,162,205,214,153,53,155,61,49,215,50,231,155,231,155,215,155,223,183,96,90,120,90,44,182,168,182,184,101,73,178,228,90,166,89,238,182,188,110,133,90,57,89,165,88,85,90,93,
179,70,173,157,173,37,214,187,173,187,167,17,167,185,78,147,78,171,158,214,103,195,176,241,182,201,182,169,183,25,176,229,216,6,219,174,182,109,182,125,97,103,98,23,103,183,197,174,195,238,147,189,147,
125,186,125,141,253,61,7,13,135,217,14,171,29,90,29,126,115,180,114,20,58,86,58,222,154,206,156,238,63,125,197,244,150,233,47,103,88,207,16,207,216,51,227,182,19,203,41,196,105,157,83,155,211,71,103,23,
103,185,115,131,243,136,139,137,75,130,203,46,151,62,46,155,27,198,221,200,189,228,74,116,245,113,93,225,122,210,245,157,155,179,155,194,237,168,219,175,238,54,238,105,238,135,220,159,204,52,159,41,158,
89,51,115,208,195,200,67,224,81,229,209,63,11,159,149,48,107,223,172,126,79,67,79,129,103,181,231,35,47,99,47,145,87,173,215,176,183,165,119,170,247,97,239,23,62,246,62,114,159,227,62,227,60,55,222,50,
222,89,95,204,55,192,183,200,183,203,79,195,111,158,95,133,223,67,127,35,255,100,255,122,255,209,0,167,128,37,1,103,3,137,129,65,129,91,2,251,248,122,124,33,191,142,63,58,219,101,246,178,217,237,65,140,
160,185,65,21,65,143,130,173,130,229,193,173,33,104,200,236,144,173,33,247,231,152,206,145,206,105,14,133,80,126,232,214,208,7,97,230,97,139,195,126,12,39,133,135,133,87,134,63,142,112,136,88,26,209,49,
151,53,119,209,220,67,115,223,68,250,68,150,68,222,155,103,49,79,57,175,45,74,53,42,62,170,46,106,60,218,55,186,52,186,63,198,46,102,89,204,213,88,157,88,73,108,75,28,57,46,42,174,54,110,108,190,223,252,
237,243,135,226,157,226,11,227,123,23,152,47,200,93,112,121,161,206,194,244,133,167,22,169,46,18,44,58,150,64,76,136,78,56,148,240,65,16,42,168,22,140,37,242,19,119,37,142,10,121,194,29,194,103,34,47,
209,54,209,136,216,67,92,42,30,78,242,72,42,77,122,146,236,145,188,53,121,36,197,51,165,44,229,185,132,39,169,144,188,76,13,76,221,155,58,158,22,154,118,32,109,50,61,58,189,49,131,146,145,144,113,66,170,
33,77,147,182,103,234,103,230,102,118,203,172,101,133,178,254,197,110,139,183,47,30,149,7,201,107,179,144,172,5,89,45,10,182,66,166,232,84,90,40,215,42,7,178,103,101,87,102,191,205,137,202,57,150,171,
158,43,205,237,204,179,202,219,144,55,156,239,159,255,237,18,194,18,225,146,182,165,134,75,87,45,29,88,230,189,172,106,57,178,60,113,121,219,10,227,21,5,43,134,86,6,172,60,184,138,182,42,109,213,79,171,
237,87,151,174,126,189,38,122,77,107,129,94,193,202,130,193,181,1,107,235,11,85,10,229,133,125,235,220,215,237,93,79,88,47,89,223,181,97,250,134,157,27,62,21,137,138,174,20,219,23,151,21,127,216,40,220,
120,229,27,135,111,202,191,153,220,148,180,169,171,196,185,100,207,102,210,102,233,230,222,45,158,91,14,150,170,151,230,151,14,110,13,217,218,180,13,223,86,180,237,245,246,69,219,47,151,205,40,219,187,
131,182,67,185,163,191,60,184,188,101,167,201,206,205,59,63,84,164,84,244,84,250,84,54,238,210,221,181,97,215,248,110,209,238,27,123,188,246,52,236,213,219,91,188,247,253,62,201,190,219,85,1,85,77,213,
102,213,101,251,73,251,179,247,63,174,137,170,233,248,150,251,109,93,173,78,109,113,237,199,3,210,3,253,7,35,14,182,215,185,212,213,29,210,61,84,82,143,214,43,235,71,14,199,31,190,254,157,239,119,45,13,
54,13,85,141,156,198,226,35,112,68,121,228,233,247,9,223,247,30,13,58,218,118,140,123,172,225,7,211,31,118,29,103,29,47,106,66,154,242,154,70,155,83,154,251,91,98,91,186,79,204,62,209,214,234,222,122,
252,71,219,31,15,156,52,60,89,121,74,243,84,201,105,218,233,130,211,147,103,242,207,140,157,149,157,125,126,46,249,220,96,219,162,182,123,231,99,206,223,106,15,111,239,186,16,116,225,210,69,255,139,231,
59,188,59,206,92,242,184,116,242,178,219,229,19,87,184,87,154,175,58,95,109,234,116,234,60,254,147,211,79,199,187,156,187,154,174,185,92,107,185,238,122,189,181,123,102,247,233,27,158,55,206,221,244,189,
121,241,22,255,214,213,158,57,61,221,189,243,122,111,247,197,247,245,223,22,221,126,114,39,253,206,203,187,217,119,39,238,173,188,79,188,95,244,64,237,65,217,67,221,135,213,63,91,254,220,216,239,220,127,
106,192,119,160,243,209,220,71,247,6,133,131,207,254,145,245,143,15,67,5,143,153,143,203,134,13,134,235,158,56,62,57,57,226,63,114,253,233,252,167,67,207,100,207,38,158,23,254,162,254,203,174,23,22,47,
126,248,213,235,215,206,209,152,209,161,151,242,151,147,191,109,124,165,253,234,192,235,25,175,219,198,194,198,30,190,201,120,51,49,94,244,86,251,237,193,119,220,119,29,239,163,223,15,79,228,124,32,127,
40,255,104,249,177,245,83,208,167,251,147,25,147,147,255,4,3,152,243,252,99,51,45,219,0,0,0,6,98,75,71,68,0,255,0,255,0,255,160,189,167,147,0,0,0,9,112,72,89,115,0,0,11,19,0,0,11,19,1,0,154,156,24,0,0,
0,7,116,73,77,69,7,216,6,8,14,58,10,183,175,243,192,0,0,32,0,73,68,65,84,120,218,237,93,105,172,93,215,85,254,214,190,227,123,182,159,237,196,113,237,212,25,157,164,80,183,148,41,85,67,129,208,86,168,
138,42,133,2,18,84,252,64,69,98,144,42,250,131,225,79,81,65,138,152,36,196,240,3,132,4,252,160,240,3,2,18,208,6,85,109,64,105,154,2,77,154,20,146,166,49,21,137,221,198,118,18,39,118,61,190,241,14,103,
47,126,220,115,238,93,123,237,181,207,112,223,115,65,201,61,79,87,239,189,123,207,116,247,154,190,245,173,181,247,33,204,185,189,255,253,239,167,75,151,46,181,54,54,54,186,163,209,104,247,144,221,202,
232,123,127,230,157,254,134,187,190,175,191,103,255,219,143,220,176,114,235,222,229,222,158,94,183,179,167,221,106,181,9,139,173,201,198,0,198,89,54,30,12,71,171,87,54,6,171,47,157,191,250,226,214,234,
165,175,186,243,207,127,177,243,229,191,124,178,75,254,106,167,211,89,91,94,94,30,238,223,191,63,123,248,225,135,121,158,235,204,37,151,123,239,189,183,117,238,220,185,222,104,52,90,25,28,125,223,183,
103,111,187,255,195,111,62,114,211,7,190,235,166,189,215,127,251,193,62,122,109,194,218,192,227,226,230,24,151,55,51,108,140,60,252,66,166,141,54,7,96,185,227,176,111,169,133,235,150,218,216,221,115,24,
140,25,95,59,183,133,167,207,92,185,240,242,75,103,62,221,122,238,161,79,244,78,62,242,181,78,167,115,245,224,193,131,131,199,30,123,44,187,166,10,112,231,157,119,210,158,61,123,58,171,171,171,123,54,
111,120,219,29,254,251,126,254,87,110,191,245,214,15,254,208,209,149,14,8,120,246,236,38,78,92,24,224,202,86,6,230,157,80,181,55,184,11,144,195,71,192,222,126,11,119,92,223,195,119,28,94,2,24,248,252,
201,171,163,175,191,248,226,39,221,23,255,252,15,150,206,63,119,98,207,158,61,171,171,171,171,163,23,94,120,129,119,92,1,14,29,58,228,86,86,86,250,195,225,240,250,225,251,62,246,19,123,238,120,231,199,
223,115,215,117,251,136,8,79,156,94,199,185,245,17,60,87,92,137,22,90,80,79,240,28,41,64,224,29,8,56,184,171,131,119,221,188,11,204,140,71,159,191,120,121,245,196,147,191,213,125,228,119,255,190,219,237,
94,184,122,245,234,214,171,175,190,234,119,76,1,14,31,62,236,250,253,254,178,119,221,195,163,15,254,225,111,222,120,203,237,63,113,207,205,187,232,169,151,54,240,210,213,17,124,33,121,71,246,233,105,167,
130,207,27,199,226,3,101,208,239,229,238,213,57,194,145,149,14,238,62,178,140,199,79,175,243,43,167,190,254,247,157,79,254,242,175,59,63,60,187,181,181,181,113,246,236,89,191,109,5,56,116,232,144,235,
116,58,203,188,235,192,45,254,131,191,255,199,119,222,114,211,123,222,188,183,131,39,95,218,192,198,200,135,167,74,9,154,254,15,36,111,92,166,174,3,138,194,23,255,31,104,1,215,87,140,229,142,195,59,143,
44,227,229,43,35,188,112,234,204,163,238,147,191,250,81,90,255,230,169,209,104,180,81,229,9,168,42,230,3,88,218,28,142,142,100,31,250,139,63,185,249,166,155,126,248,224,238,54,190,242,234,22,198,25,139,
163,201,16,116,202,237,211,181,241,4,244,255,192,98,119,228,60,92,30,14,216,80,2,6,218,45,194,59,14,245,113,110,109,140,211,103,206,252,107,235,193,159,251,197,165,110,231,37,0,155,101,152,160,85,118,
111,7,14,28,232,109,110,110,30,204,126,244,143,62,190,255,200,237,63,126,120,79,7,207,190,182,133,177,207,5,75,52,113,251,36,254,39,2,156,155,253,13,82,159,9,175,160,143,107,240,34,39,174,159,255,77,226,
229,212,255,219,125,65,252,214,215,101,208,220,223,35,28,11,132,227,165,207,27,25,219,108,63,207,192,185,181,49,110,217,223,197,160,189,235,232,198,161,239,222,157,125,245,159,159,236,118,187,91,23,46,
92,200,26,43,192,109,183,221,214,30,141,70,251,199,223,255,145,15,182,238,184,231,99,119,29,232,211,127,159,31,96,228,243,139,59,117,147,14,225,151,114,74,200,98,192,74,7,160,228,69,4,144,155,188,228,
123,193,105,157,18,212,14,189,136,40,210,215,233,61,228,247,68,13,190,75,165,1,64,141,13,164,114,0,96,165,24,4,120,6,46,110,102,184,243,250,30,206,211,222,119,100,253,125,39,249,27,79,156,188,238,186,
235,134,151,47,95,246,181,29,231,177,99,199,104,109,109,109,215,112,249,134,183,224,39,255,244,161,163,135,247,221,248,234,218,24,235,50,230,79,221,187,225,254,3,215,159,112,249,13,93,54,185,170,211,208,
142,70,8,174,177,7,151,236,207,126,206,11,166,66,2,27,161,128,141,207,24,216,213,117,56,180,171,141,147,175,94,126,5,127,247,145,251,187,27,231,255,103,247,238,221,235,199,143,31,231,90,30,96,101,101,
165,61,28,14,15,248,15,60,240,75,203,55,220,244,158,182,35,92,216,202,148,202,75,225,23,26,224,98,243,112,9,205,79,154,184,225,230,137,32,127,28,10,215,236,108,75,181,94,174,161,203,71,58,20,68,215,202,
85,140,140,239,194,166,43,143,6,35,49,70,8,207,7,21,6,130,207,102,239,15,61,99,169,237,48,166,206,158,209,245,71,25,199,63,251,36,128,141,75,151,46,69,106,217,182,20,96,52,26,245,179,189,55,222,76,7,239,
250,208,222,37,135,115,27,217,116,80,226,120,133,192,13,89,191,201,204,16,168,212,92,41,145,65,74,76,105,194,75,218,30,86,228,138,253,152,173,99,104,186,63,115,194,176,185,198,201,181,209,19,27,222,129,
194,255,139,11,122,17,26,192,56,183,145,225,192,178,195,230,193,187,62,148,237,125,243,95,143,214,94,189,12,96,205,98,28,131,237,200,145,35,173,44,203,86,232,221,63,119,63,58,189,189,35,15,140,139,60,
191,76,248,83,1,9,91,37,55,179,210,200,218,13,141,119,2,59,76,127,233,224,239,114,31,144,239,156,191,79,198,231,214,11,21,175,170,227,72,94,75,93,143,225,20,72,81,134,236,96,123,196,132,39,36,42,206,93,
140,39,25,86,34,60,173,184,224,216,243,4,175,117,122,123,233,221,63,123,127,150,101,43,71,142,28,105,85,122,0,231,92,103,56,28,238,195,161,183,220,183,210,119,184,50,240,96,71,177,208,73,88,100,113,99,
110,98,13,166,185,149,121,0,10,173,119,54,46,148,164,19,202,60,65,234,3,87,3,8,232,80,11,174,54,218,34,35,115,210,48,139,59,102,76,255,99,113,64,224,41,40,65,248,20,159,49,137,3,73,192,2,158,125,41,206,
149,139,121,58,160,87,6,30,123,250,14,87,15,189,229,190,44,203,254,186,219,237,94,4,144,149,42,192,104,52,234,241,225,183,30,161,93,7,142,141,61,48,226,80,224,211,11,18,102,26,73,136,37,168,213,63,65,
6,17,25,135,81,2,43,82,164,55,205,220,124,29,36,72,0,177,125,12,151,156,74,166,229,36,40,18,166,73,8,100,14,189,56,213,2,138,185,54,146,58,144,38,239,83,126,179,204,198,29,49,48,98,70,199,3,216,117,224,
24,31,126,235,145,209,171,95,123,25,192,86,50,4,28,61,122,212,121,239,251,56,118,223,221,112,212,98,157,166,57,153,10,9,23,32,241,65,152,147,77,94,206,78,253,116,58,55,83,170,217,139,85,174,71,194,41,
22,251,16,12,192,103,188,106,167,123,214,177,26,68,170,235,59,5,244,184,224,7,196,23,156,28,43,190,107,16,29,53,95,146,239,80,112,42,78,0,106,197,21,20,231,157,142,191,3,224,38,90,200,147,99,91,56,118,
223,221,222,251,254,209,163,71,93,210,3,92,190,124,153,90,173,86,223,237,191,241,118,16,144,241,204,68,73,154,44,169,212,143,18,8,140,121,178,47,27,217,32,169,223,211,83,113,0,232,244,126,22,224,43,75,
5,105,78,16,104,130,66,18,41,160,240,82,133,117,59,113,145,194,19,75,240,39,141,153,4,158,163,36,253,172,227,81,232,1,166,3,35,195,20,243,76,241,136,115,25,2,180,255,198,219,61,115,255,242,229,203,148,
84,128,78,167,211,202,178,172,135,165,125,55,19,57,140,125,110,145,218,253,59,86,163,79,118,1,136,202,115,122,39,128,163,142,18,193,225,46,117,74,170,45,224,186,117,0,210,238,220,84,8,129,250,1,144,136,
25,94,133,117,162,25,64,15,132,207,147,24,78,52,57,134,72,133,4,137,185,88,243,255,148,6,40,68,32,63,77,35,38,50,4,129,151,246,221,204,204,189,78,167,211,146,56,160,173,226,63,17,81,23,157,222,222,9,209,
65,225,8,114,168,113,129,117,51,165,70,107,118,99,98,132,157,120,159,57,215,41,101,245,114,84,29,210,159,83,73,217,116,238,178,2,197,153,150,190,22,11,172,95,88,186,83,138,32,149,129,49,195,23,94,156,
196,65,40,65,25,255,47,111,74,186,85,86,127,211,12,114,50,231,128,164,221,219,199,204,221,225,112,152,246,0,68,228,136,168,141,86,123,121,134,196,12,95,77,42,43,168,129,250,165,149,132,8,159,103,158,192,
197,2,112,137,76,1,85,56,19,102,228,153,79,33,200,246,206,18,217,19,133,249,190,19,134,75,234,183,20,122,17,38,40,103,22,137,66,121,134,110,201,250,230,28,255,61,205,4,196,103,237,246,18,128,182,115,46,
141,1,90,173,22,101,89,230,0,106,49,83,73,69,15,161,58,67,17,20,202,250,201,21,95,178,56,29,69,40,52,66,253,202,75,200,75,146,17,22,167,222,112,27,68,16,215,216,159,89,13,55,203,212,79,10,140,131,207,
44,229,12,44,223,163,60,85,76,178,69,9,141,101,205,94,81,11,128,107,181,90,105,15,192,204,179,208,234,12,9,153,200,139,74,45,103,6,226,200,36,13,11,5,161,4,124,32,34,147,255,39,101,230,41,193,83,83,215,
95,165,16,210,211,26,224,110,150,234,145,224,9,149,55,200,141,147,133,167,32,71,83,229,226,162,210,160,64,164,121,183,193,77,208,44,124,56,5,25,168,192,136,92,77,5,147,28,106,214,100,68,61,193,23,199,
18,133,128,136,56,148,52,1,32,159,187,127,54,132,204,113,49,204,116,207,156,184,35,10,179,132,234,44,128,75,181,64,103,5,210,35,144,136,243,44,174,232,17,131,64,201,11,16,207,50,32,207,51,92,65,129,23,
224,68,166,64,138,131,38,205,34,149,34,242,118,202,185,144,4,28,164,254,166,4,83,22,209,194,26,8,81,156,6,22,159,121,145,108,184,132,194,91,36,80,34,36,216,30,129,27,121,1,82,227,203,156,2,129,185,213,
146,125,41,167,142,103,3,76,78,12,151,242,207,57,192,213,5,209,67,194,165,179,101,117,94,226,128,16,28,166,190,121,187,154,22,43,207,165,40,53,192,97,158,20,230,248,150,171,175,18,62,236,170,115,80,131,
216,129,48,144,82,21,25,206,184,72,225,148,34,144,160,146,103,136,62,100,60,101,172,39,164,57,130,34,27,224,196,13,145,245,182,40,6,5,46,170,100,107,167,134,140,3,243,162,0,1,201,50,135,201,155,83,232,
25,36,112,35,55,3,167,81,241,208,81,96,29,100,164,196,90,160,46,168,143,87,84,248,106,214,2,234,120,9,202,199,136,109,93,143,65,157,196,103,60,195,5,36,228,229,89,132,17,195,211,151,81,199,156,110,30,
44,53,131,54,202,188,173,206,239,73,161,253,146,198,75,10,177,71,192,57,19,41,206,188,160,128,217,40,54,42,87,159,194,158,73,132,66,13,61,0,197,202,80,198,14,146,122,211,35,54,62,134,114,255,68,19,37,
80,233,190,35,125,158,73,114,200,101,193,139,97,80,83,178,118,192,165,93,230,237,210,145,224,10,103,202,134,169,230,90,76,100,8,159,66,96,23,32,125,150,204,224,12,52,166,226,188,244,54,165,240,148,155,
179,129,204,230,215,50,221,175,244,24,81,138,40,223,227,24,99,233,48,50,101,135,2,172,16,186,113,230,42,56,163,52,207,38,17,170,67,64,163,40,202,136,75,252,76,65,88,210,128,80,167,121,78,87,70,13,192,
23,112,4,21,149,65,170,121,235,165,196,79,69,30,79,66,89,189,37,124,129,5,52,118,241,44,60,129,136,103,108,42,65,172,84,149,110,44,170,55,55,8,1,97,112,163,56,209,53,6,151,88,65,6,43,198,147,194,3,133,
229,83,250,30,52,162,15,26,100,185,188,99,200,66,227,117,192,95,217,172,54,237,29,88,184,111,207,74,112,156,228,198,38,251,251,208,19,152,172,161,16,40,165,92,121,25,79,80,248,127,110,224,1,40,201,127,
86,187,225,162,253,139,44,139,45,220,188,40,39,203,102,79,171,192,72,138,51,64,144,55,151,167,136,243,160,127,42,33,132,88,123,7,14,107,53,78,113,3,69,58,39,11,68,94,41,1,243,76,9,156,184,134,23,97,210,
171,24,95,120,144,122,25,46,65,181,233,212,195,0,84,217,28,39,191,136,234,238,97,101,245,46,28,88,87,120,21,23,226,1,205,18,58,193,69,84,246,8,214,32,130,106,97,0,86,125,124,134,66,177,242,180,132,184,
46,192,126,6,226,156,162,127,217,8,45,68,4,47,60,65,161,28,146,45,148,119,225,44,98,40,41,39,154,3,4,114,157,138,10,5,49,206,76,249,10,166,79,166,122,133,64,125,184,175,20,162,19,82,213,68,81,224,57,56,
93,36,138,58,173,184,190,23,136,192,94,170,186,39,10,64,41,0,168,189,0,20,41,52,85,58,31,95,67,214,4,138,243,123,88,12,224,92,188,87,9,6,40,61,17,37,67,65,16,171,17,215,239,193,97,238,107,10,159,18,172,
92,42,75,176,210,68,139,72,106,58,55,144,227,176,224,141,40,72,70,82,164,201,32,151,187,237,96,255,168,162,24,226,1,237,85,89,83,206,0,152,169,158,180,155,98,0,226,138,209,148,241,29,113,31,159,244,8,
80,136,57,104,98,53,66,70,202,130,131,186,130,171,206,81,202,0,33,85,192,155,148,145,185,138,154,0,43,33,235,66,144,20,158,79,185,107,230,32,172,176,224,23,166,199,69,132,17,149,23,47,154,120,0,226,25,
170,47,77,162,133,240,164,85,202,80,16,148,116,139,207,125,2,221,11,238,129,140,70,209,64,8,62,33,124,151,170,83,212,175,2,234,74,43,25,41,130,101,245,94,177,160,80,148,239,68,248,51,16,231,4,99,40,27,
68,40,167,115,189,56,214,9,222,161,192,17,30,41,62,24,233,9,10,205,106,1,37,164,144,97,169,210,154,195,169,92,84,10,228,156,26,73,93,5,140,132,159,18,28,133,156,68,211,120,136,26,233,159,246,207,242,95,
93,223,135,193,239,75,96,232,57,149,246,169,243,89,152,3,113,251,90,50,77,155,11,3,112,137,217,168,38,12,147,150,229,144,1,212,217,69,97,41,142,66,42,51,98,10,73,165,146,21,233,93,85,65,168,110,83,168,
197,225,167,154,52,34,37,144,93,89,170,92,47,149,192,42,10,205,254,204,115,127,3,91,128,227,66,82,26,171,241,60,30,128,166,76,94,221,156,217,73,60,224,66,142,218,106,241,10,203,192,52,243,26,41,112,71,
113,170,71,9,197,219,6,9,152,78,249,130,98,142,77,12,73,37,96,141,222,185,186,104,69,218,226,85,6,67,194,237,203,134,148,8,157,26,223,136,27,21,131,184,190,224,173,249,140,73,80,87,32,98,103,81,194,49,
209,19,133,132,4,245,235,42,64,94,93,47,145,178,238,84,93,77,198,124,203,61,91,161,98,70,242,204,8,26,22,244,176,11,138,71,51,109,43,148,163,248,92,102,20,132,73,231,113,153,199,79,201,212,149,134,128,
18,77,53,83,69,22,241,156,67,183,30,80,197,28,163,87,74,81,187,198,251,102,223,96,9,147,23,45,81,128,196,212,68,245,121,213,121,29,98,80,24,16,83,169,208,168,194,30,12,75,39,245,127,224,246,85,167,21,
184,196,104,43,100,89,143,8,50,212,38,0,126,169,146,43,151,167,108,65,222,207,49,130,38,82,180,175,50,67,151,224,32,82,5,164,121,194,128,69,2,5,105,33,207,104,89,74,236,195,92,62,174,197,52,49,135,240,
92,146,77,140,96,157,80,12,70,221,169,102,77,211,192,148,251,244,8,99,182,74,235,156,238,32,151,108,29,203,52,145,74,235,250,78,153,94,100,133,28,42,80,165,107,155,99,149,168,20,1,4,33,44,167,176,22,43,
207,229,57,102,8,157,22,112,209,203,41,250,1,28,226,230,94,233,13,88,88,55,87,133,238,198,32,48,17,69,117,172,183,184,128,128,232,97,155,21,36,77,246,144,77,227,154,224,207,25,164,85,73,106,72,77,215,
39,164,156,59,23,83,133,157,85,209,179,4,164,199,92,113,249,172,191,179,104,33,147,108,159,197,255,75,119,239,197,119,247,53,50,191,70,32,176,169,155,12,226,149,158,201,10,163,133,27,118,127,46,25,229,
95,51,198,86,184,125,75,81,230,250,126,185,230,178,183,83,62,50,238,145,19,173,226,122,34,137,60,151,19,157,63,145,12,69,101,49,226,21,148,87,157,135,238,176,21,192,39,210,138,146,217,42,206,202,245,57,
213,238,77,65,91,88,170,229,198,36,132,24,233,30,130,32,115,160,100,106,100,50,131,37,109,83,19,193,114,114,24,60,135,38,110,102,14,162,33,212,100,108,189,129,11,20,0,33,3,63,72,10,186,52,29,244,13,20,
192,161,164,121,66,113,255,210,106,117,179,167,67,248,30,41,129,147,161,60,58,108,192,192,22,26,20,234,238,224,114,171,174,112,105,41,69,200,11,53,214,90,142,45,132,45,225,94,121,3,159,104,150,150,197,
32,135,25,253,171,67,76,208,107,224,195,130,144,71,28,22,182,239,1,74,54,23,145,220,202,189,107,112,87,103,157,72,165,36,208,147,143,145,158,254,21,128,198,90,75,128,52,163,128,161,148,203,43,79,192,53,
206,77,41,171,181,168,117,171,13,77,54,158,48,210,221,247,152,117,133,219,216,150,203,103,6,141,70,163,92,101,109,247,73,138,192,9,210,63,214,76,162,202,24,34,134,48,116,235,218,112,157,15,205,128,234,
128,122,111,1,64,108,107,211,169,149,3,193,27,110,64,90,252,148,195,79,172,13,16,8,53,64,145,20,228,244,211,182,50,142,161,92,42,29,76,230,252,30,60,149,111,74,1,134,195,33,0,240,112,12,223,55,168,96,
153,238,21,141,30,83,172,84,32,127,166,112,31,41,108,209,51,77,198,185,101,234,40,215,66,8,4,64,9,215,175,206,232,168,156,0,105,2,6,245,186,65,78,231,230,70,206,239,84,56,208,205,30,222,232,22,214,125,
94,1,59,200,33,105,196,62,156,140,82,76,161,247,6,163,153,121,194,250,128,252,112,56,244,149,10,192,204,188,49,100,30,13,9,75,109,160,227,56,36,102,68,44,39,171,114,167,242,127,29,123,167,189,128,42,222,
7,117,2,14,137,32,171,195,55,92,36,147,42,89,187,42,55,207,21,212,113,85,111,62,27,41,169,110,1,11,162,165,65,19,23,147,70,97,240,6,193,132,17,181,32,85,177,118,20,33,36,147,24,192,214,152,48,24,3,89,
198,24,141,70,229,33,96,60,30,79,148,203,3,227,12,88,243,64,183,69,88,106,51,90,58,253,34,59,167,215,41,159,149,247,144,178,116,36,186,130,173,134,14,170,240,4,85,124,79,85,181,144,107,242,233,146,161,
3,74,138,110,186,83,184,248,237,66,154,150,17,146,66,86,183,145,83,215,76,49,148,4,96,144,17,54,199,19,101,240,12,120,15,246,222,115,169,2,20,31,178,7,251,108,114,162,161,7,198,99,135,126,135,177,212,
182,205,38,138,237,212,128,138,101,49,61,28,138,7,224,146,86,48,57,35,134,210,196,80,105,85,167,110,157,35,65,11,91,241,191,172,40,197,28,167,120,81,171,183,79,40,61,203,50,177,186,25,241,59,243,192,250,
144,48,242,60,173,72,114,30,50,216,208,238,118,21,219,231,253,132,132,216,98,96,52,38,44,183,25,189,142,17,223,37,189,155,74,239,16,46,168,154,34,128,52,211,8,36,214,164,66,189,18,176,84,176,186,129,159,
141,218,127,217,212,88,121,63,62,113,111,78,132,122,189,159,51,20,44,216,95,116,126,88,221,122,222,3,27,35,194,32,99,100,133,240,107,132,196,116,45,64,105,162,207,107,144,27,30,24,101,132,165,14,163,219,
22,93,191,198,132,13,242,8,26,50,137,41,18,170,196,22,178,78,48,93,9,205,32,66,2,143,227,168,50,133,163,109,118,3,149,237,83,60,45,197,113,12,0,89,133,129,104,38,29,135,13,30,146,232,209,40,159,53,152,
22,130,223,26,19,182,70,64,230,39,235,11,176,209,46,71,141,106,1,9,196,195,249,5,71,204,200,60,208,25,79,240,65,175,29,131,53,170,202,253,53,11,72,105,46,63,165,197,181,172,191,94,103,84,105,6,208,160,
132,16,8,94,187,119,50,128,157,14,45,4,138,215,8,22,105,34,229,237,100,25,3,91,35,194,102,54,1,120,121,156,175,88,118,110,59,10,32,214,29,240,174,72,61,24,126,12,108,181,39,25,67,175,157,187,120,134,217,
156,105,73,145,184,100,62,32,219,148,164,158,90,86,106,181,219,225,1,18,85,209,192,77,39,38,146,68,57,57,91,252,190,113,82,189,210,68,225,141,243,235,100,30,216,28,3,131,92,240,25,139,112,229,75,132,205,
77,67,128,133,11,132,171,114,114,82,228,120,18,26,6,227,153,34,56,37,84,55,253,226,20,182,145,85,44,56,238,44,198,175,4,0,238,132,251,47,27,183,216,161,208,20,92,121,164,139,70,214,58,66,142,13,234,152,
57,104,253,46,14,24,123,96,107,12,12,51,158,88,58,207,72,54,9,10,93,66,214,52,119,67,136,9,103,195,56,229,125,145,191,78,20,97,107,76,232,181,128,94,7,232,88,165,91,178,43,105,17,67,152,210,92,87,223,
133,239,180,2,148,2,6,221,9,44,158,231,64,198,163,128,82,222,70,182,136,13,198,192,112,52,81,128,140,103,194,15,64,106,202,99,239,104,53,80,187,111,31,11,196,103,147,191,153,25,91,185,71,104,183,38,30,
161,223,202,123,1,83,53,209,4,173,75,206,192,21,190,94,157,225,154,109,108,135,75,178,42,116,92,18,98,19,157,66,227,44,183,246,241,4,100,22,185,60,35,156,62,30,185,252,50,133,240,77,67,0,167,43,116,81,
77,32,154,182,146,211,218,196,24,51,224,199,192,208,17,58,14,232,118,48,201,30,136,130,48,161,39,163,146,73,190,164,11,68,129,178,236,28,4,176,231,23,24,224,172,10,71,73,96,104,245,241,141,51,158,88,251,
120,18,231,51,206,17,189,116,245,138,63,208,236,32,124,186,51,136,120,155,10,32,133,68,28,167,111,208,5,34,193,89,123,154,192,86,239,9,163,140,177,213,154,132,134,94,135,208,105,1,45,49,247,41,90,138,
144,99,130,40,92,177,134,34,108,176,83,26,96,133,16,61,93,130,61,199,172,29,39,10,88,44,208,63,79,72,182,81,46,248,113,54,19,184,103,54,231,39,66,22,135,56,172,5,144,94,133,140,119,26,3,64,44,23,196,37,
12,91,217,66,77,12,100,5,120,36,198,40,31,188,142,35,116,219,19,101,104,183,18,41,36,87,91,40,39,102,4,205,219,25,100,53,89,214,74,175,216,102,11,189,7,70,25,48,28,51,70,25,48,102,206,25,186,25,101,203,
98,9,56,233,238,185,96,106,217,14,65,193,189,54,104,14,109,196,3,232,134,53,166,48,70,7,113,201,98,68,72,48,91,178,145,146,24,227,49,231,203,227,79,20,161,147,255,110,187,248,60,114,117,173,192,205,166,
202,191,115,116,203,38,243,127,95,223,96,124,54,137,231,67,63,177,240,113,198,83,46,133,101,92,231,68,71,79,9,229,27,220,15,151,164,156,115,167,129,150,11,41,158,89,224,195,146,112,240,188,3,41,127,143,
240,217,6,204,112,76,113,173,64,204,143,247,148,91,7,49,182,114,58,185,211,34,180,28,161,221,6,90,110,242,34,43,33,224,116,123,58,53,88,45,140,75,188,152,75,140,169,247,19,114,38,203,38,175,113,198,24,
123,158,218,4,115,14,146,145,152,60,226,195,153,65,204,147,241,99,142,215,33,148,132,143,203,255,175,242,194,219,103,2,169,220,189,215,114,219,21,238,124,58,17,198,207,176,128,159,22,169,24,110,52,195,
9,173,92,41,90,142,209,34,202,39,117,208,68,57,92,90,168,85,13,34,92,178,14,143,247,133,171,158,164,99,99,102,120,207,24,251,25,37,44,83,180,192,194,145,104,216,224,146,208,195,205,178,135,29,243,0,150,
2,176,136,165,204,246,28,122,82,234,192,84,35,15,55,58,128,245,227,8,188,143,93,188,103,198,56,63,249,244,17,50,196,65,166,34,31,102,42,75,6,197,146,54,114,158,95,16,123,69,202,53,181,94,193,219,79,246,
13,99,181,228,68,130,33,84,130,209,107,15,114,130,255,183,170,139,108,189,207,245,148,10,59,81,11,152,166,25,242,41,48,86,23,163,81,182,139,158,30,227,226,247,166,2,86,43,40,4,44,154,83,56,32,199,16,178,
190,78,136,139,89,212,144,37,225,178,33,145,110,87,135,12,159,22,176,142,241,44,133,157,176,106,246,229,30,128,217,192,94,215,2,3,0,225,19,99,244,196,78,103,228,236,250,209,120,78,166,116,62,126,238,4,
113,140,13,228,68,82,64,85,24,101,28,101,14,58,130,171,192,58,53,39,205,68,154,199,51,26,151,99,2,72,82,223,94,181,139,123,168,213,66,2,86,143,35,69,114,98,226,135,204,253,61,102,211,201,162,197,34,118,
4,3,248,10,130,196,25,0,64,23,234,131,181,81,10,11,151,171,89,135,159,193,8,25,211,53,119,9,102,190,77,84,198,218,108,147,226,53,49,2,87,166,124,81,59,184,46,238,249,48,214,179,21,255,189,46,39,115,20,
110,2,97,251,154,25,92,109,5,72,228,197,148,152,47,205,10,133,91,152,193,90,88,185,108,9,246,224,60,108,225,141,188,105,146,102,194,33,119,237,248,96,86,77,155,158,43,134,140,171,185,3,54,226,127,82,30,
108,19,75,193,147,201,184,153,198,39,21,192,164,19,229,132,14,65,255,82,212,250,205,98,253,250,89,204,39,227,97,99,214,116,106,210,212,174,224,254,41,241,204,128,169,114,100,92,61,23,144,230,112,11,134,
229,155,79,237,209,75,189,234,182,47,213,224,194,98,237,160,212,49,196,33,139,24,52,139,248,80,129,104,39,20,32,89,69,19,86,77,122,234,55,37,110,128,102,177,155,132,196,136,212,132,71,171,255,223,11,165,
51,234,156,100,228,250,129,139,72,174,4,209,180,240,195,145,119,51,179,90,86,130,133,61,175,80,190,31,60,101,132,141,53,128,84,201,87,130,111,214,133,168,170,53,29,182,157,5,164,216,56,203,133,151,172,
150,53,121,198,112,188,196,9,171,169,224,193,234,219,94,132,12,154,57,6,151,72,85,131,165,188,231,157,29,98,248,83,77,15,123,99,119,102,152,235,9,165,81,63,135,169,32,219,228,4,91,232,63,160,138,171,229,
182,109,5,224,76,20,109,156,136,253,164,0,162,159,81,135,65,27,148,236,118,16,15,136,152,126,166,186,77,61,199,205,37,1,31,160,149,32,179,228,109,84,148,26,50,65,150,96,188,161,24,108,224,2,102,155,224,
137,120,4,142,159,49,160,115,125,134,209,7,192,117,66,216,14,164,129,58,189,43,92,180,115,98,253,31,233,186,157,216,71,31,79,241,162,207,211,84,208,33,90,18,62,152,128,82,232,150,198,3,100,215,30,96,160,
233,102,158,32,14,55,146,22,246,108,87,13,157,242,6,142,67,208,87,204,58,118,130,64,114,108,160,124,113,188,78,247,10,92,224,96,44,32,189,163,84,176,133,210,69,70,7,157,26,178,48,107,103,148,75,115,105,
19,81,180,104,66,97,197,158,226,214,114,57,169,194,235,25,50,46,253,176,136,29,203,4,216,76,215,77,150,207,174,232,25,149,60,235,120,57,134,86,26,153,242,10,184,198,33,32,50,48,89,193,240,162,36,75,97,
142,42,159,128,69,132,240,217,118,20,159,183,136,231,69,154,167,145,118,16,2,40,102,42,175,137,224,53,49,202,9,234,86,125,158,116,253,34,183,215,116,112,244,158,154,252,169,211,63,236,172,2,112,249,2,
17,82,104,178,117,75,204,81,99,245,148,173,34,43,116,16,96,47,199,2,164,176,128,92,33,28,154,254,149,46,84,43,129,241,8,189,237,234,130,21,251,153,211,139,64,69,53,1,46,129,22,222,0,142,22,120,240,198,
181,45,74,184,148,75,224,166,24,128,227,57,188,86,30,159,91,104,65,209,58,40,70,175,32,103,196,194,18,114,57,185,2,48,6,79,22,101,181,164,154,143,215,21,46,238,71,175,87,64,85,171,64,215,89,42,180,164,
213,92,246,243,251,136,34,14,23,129,50,177,1,207,98,63,25,72,190,136,243,196,241,84,50,43,213,43,222,119,165,97,155,231,232,8,42,14,68,245,147,67,116,63,124,28,2,102,5,249,105,1,72,228,201,65,123,127,
174,20,209,226,137,172,60,138,11,141,195,41,87,76,180,115,252,175,233,222,19,169,161,89,197,211,20,176,114,253,12,195,221,27,46,35,85,38,78,45,15,199,53,190,116,101,87,240,116,30,188,26,209,169,32,21,
155,87,252,111,134,0,154,197,243,8,157,230,93,167,44,22,149,144,69,65,231,66,225,114,22,10,218,43,3,151,79,245,152,7,19,164,114,106,95,162,28,242,111,111,84,5,101,91,151,89,22,102,251,169,96,58,77,156,
70,128,146,137,32,81,205,162,73,87,112,234,132,169,165,227,88,133,6,157,155,79,143,207,5,76,178,0,20,208,162,60,125,162,72,33,184,169,18,120,201,249,199,202,5,53,135,223,161,28,160,53,197,1,214,180,111,
75,248,86,125,32,40,224,248,184,135,163,16,190,103,97,253,21,28,2,216,182,254,164,213,55,9,1,142,103,237,92,37,248,127,54,181,91,174,21,8,99,157,191,226,188,58,190,235,82,111,238,243,157,120,182,128,158,
89,4,235,161,17,137,39,140,213,161,66,235,128,102,82,113,62,24,5,142,99,191,244,72,193,83,198,139,71,196,89,169,96,129,27,60,199,156,195,244,51,227,217,5,106,126,89,170,37,142,231,74,3,185,132,120,47,
186,126,10,102,208,169,208,128,184,138,231,179,137,112,139,207,138,124,63,122,206,94,193,15,36,104,223,240,161,202,33,11,57,93,116,145,118,36,252,71,46,221,116,255,106,128,125,204,240,154,174,63,200,223,
253,172,32,20,157,223,135,169,96,52,51,168,142,197,239,212,228,208,148,55,96,209,215,239,115,235,150,239,205,6,39,87,2,63,147,122,160,4,146,66,83,203,201,120,225,69,52,103,48,85,4,50,150,106,159,131,27,
72,246,6,122,163,5,160,204,253,115,26,244,85,213,14,100,221,128,217,2,131,92,63,231,111,162,0,17,2,45,93,93,131,163,37,77,73,145,53,1,207,159,55,85,58,154,197,122,141,252,217,171,2,129,88,99,64,175,207,
91,166,8,214,96,35,161,16,92,131,71,231,146,250,191,103,187,40,52,21,190,193,255,75,225,123,149,50,72,37,246,17,227,199,245,22,134,22,30,130,27,243,0,158,227,135,69,35,205,177,79,228,196,249,106,28,20,
44,254,20,112,251,50,94,137,85,167,56,139,159,8,50,121,210,56,155,28,128,229,234,173,229,104,234,122,0,170,225,1,172,101,98,217,171,158,69,142,243,118,221,16,227,85,43,120,81,15,128,174,45,200,248,95,
196,247,198,83,192,185,116,57,249,118,165,6,89,143,15,179,138,45,114,241,99,209,246,165,75,184,137,251,155,90,183,164,125,89,45,153,45,187,120,73,184,122,34,197,37,24,78,171,234,81,47,77,64,33,151,100,
1,26,185,71,61,161,172,189,132,209,101,164,210,61,157,14,214,91,252,129,107,129,31,75,1,218,126,112,197,101,232,194,94,121,177,196,138,72,173,241,87,60,229,210,169,76,64,91,180,126,98,168,139,171,132,
114,223,224,22,156,249,103,35,107,111,2,20,117,119,176,238,121,96,111,224,128,20,55,224,203,41,230,98,2,8,11,97,50,215,105,251,138,31,63,229,7,87,156,37,239,182,49,54,187,239,187,235,243,111,58,118,215,
65,172,172,172,76,151,23,157,197,50,182,137,6,212,32,35,22,219,92,91,157,229,238,167,235,47,138,223,197,107,117,117,21,207,253,207,107,111,250,196,99,216,173,245,223,84,0,71,89,139,153,209,237,118,183,
165,0,11,37,184,246,130,175,163,0,204,12,71,190,5,84,43,0,0,116,90,173,150,91,95,95,199,234,234,106,160,0,90,17,154,10,119,161,12,59,43,244,42,193,19,17,156,115,32,34,180,219,206,1,232,212,2,129,221,78,
7,189,94,15,222,251,169,160,125,30,192,180,224,45,161,46,4,253,173,83,142,42,5,40,148,160,211,25,215,207,2,186,221,46,122,189,222,84,240,117,194,64,74,232,11,101,184,54,222,64,126,166,133,63,1,210,110,
250,219,57,135,110,119,216,76,1,150,150,150,34,225,107,69,144,66,158,23,19,188,209,21,196,18,100,221,227,244,177,150,23,40,66,64,175,59,168,175,0,253,126,31,75,75,75,129,192,83,33,192,123,95,42,236,133,
7,216,158,114,84,121,1,75,9,172,16,208,235,109,213,86,0,238,118,187,156,242,0,90,176,101,66,94,132,133,157,119,247,85,177,95,187,255,226,119,175,215,51,171,218,214,250,223,222,57,55,238,247,251,129,2,
72,97,55,197,2,77,4,254,122,86,142,121,17,126,147,216,175,173,191,80,0,34,26,99,214,79,92,170,0,35,176,223,234,118,187,149,66,175,195,13,44,194,192,206,186,127,109,249,41,5,144,30,96,178,164,46,111,1,
24,85,41,64,6,96,107,115,227,202,107,253,126,255,198,84,188,79,9,190,204,19,44,148,96,123,222,34,101,249,169,20,80,43,195,230,198,229,215,0,108,229,50,78,42,128,7,176,126,246,236,249,139,129,246,136,11,
91,60,192,188,89,65,157,52,242,141,38,220,38,128,207,18,126,202,240,206,158,61,127,17,192,58,84,129,199,242,0,171,207,30,127,254,244,79,21,61,124,204,165,68,195,118,51,128,55,178,103,168,139,9,156,115,
149,227,39,229,100,25,233,179,199,159,63,13,96,181,202,3,48,128,171,79,61,254,217,167,47,94,250,200,79,95,183,127,87,75,159,52,88,134,37,255,191,10,152,44,182,237,109,101,33,182,78,56,190,120,105,61,123,
234,241,207,62,13,224,170,198,0,206,80,128,53,239,253,233,255,122,250,153,19,146,3,40,203,4,188,247,102,202,40,223,95,108,205,133,174,199,85,190,47,223,43,251,159,153,241,244,211,95,57,225,189,63,13,96,
173,74,1,0,96,19,192,233,207,62,252,185,47,151,185,245,50,126,32,133,19,234,190,94,207,66,157,103,28,202,198,90,18,113,150,151,6,128,207,60,252,200,151,1,156,206,101,139,42,5,24,3,56,251,159,79,126,238,
11,207,62,119,242,66,202,197,207,235,198,202,0,206,235,61,108,52,193,79,219,197,75,197,53,158,125,238,228,133,255,124,242,115,95,0,112,86,199,255,148,2,48,128,43,0,142,63,248,183,15,62,234,61,215,186,
152,190,201,38,130,124,35,134,136,38,66,110,194,7,4,41,157,103,60,248,183,15,62,10,224,120,46,83,95,71,1,0,96,0,224,27,79,60,254,200,103,62,255,216,151,78,165,242,75,75,147,171,8,140,55,154,213,55,245,
6,101,227,151,74,31,83,245,128,71,31,251,210,169,39,30,127,228,51,0,190,145,203,52,138,249,214,236,0,0,2,187,73,68,65,84,218,90,41,5,205,89,163,209,51,207,60,235,126,240,222,247,126,207,222,149,93,109,
89,93,42,19,232,78,228,189,139,148,16,141,88,64,109,156,47,191,242,205,173,223,248,245,143,255,229,96,176,241,47,0,206,228,242,172,173,0,83,86,112,48,216,24,156,56,241,226,174,123,127,240,222,183,246,
251,93,74,117,156,148,121,136,55,186,181,111,199,43,52,249,191,120,173,173,109,241,3,15,252,230,63,157,62,245,194,63,228,238,127,61,117,205,86,197,61,141,1,172,189,246,218,203,235,103,94,122,109,229,251,
223,253,238,163,157,78,139,170,4,92,245,69,22,175,122,6,82,103,28,245,123,131,193,152,127,251,119,126,239,95,158,252,210,23,254,6,192,83,0,46,163,100,221,215,42,5,240,0,134,0,46,159,58,117,242,234,137,
147,167,151,223,117,207,61,71,151,250,61,90,8,234,218,43,65,83,67,186,186,186,201,15,60,240,91,15,255,251,191,61,242,55,0,254,3,192,249,148,235,175,171,0,69,40,216,4,112,233,204,153,23,47,60,245,212,87,
248,237,111,127,199,173,215,95,191,175,107,133,128,157,116,251,175,55,139,190,22,223,189,216,247,228,201,51,235,31,251,181,143,127,234,153,167,191,244,32,128,47,230,105,223,176,242,58,13,238,169,11,224,
6,0,223,217,239,239,122,223,207,255,194,71,239,255,241,31,251,192,209,94,175,83,9,98,22,113,255,218,165,138,131,193,8,255,240,143,159,62,249,231,127,246,199,15,109,109,173,63,2,224,153,220,242,135,181,
20,173,225,61,181,1,236,5,112,20,192,221,183,222,246,109,239,249,240,135,63,124,207,251,222,251,3,55,22,138,240,173,42,144,188,222,132,218,116,27,12,70,120,228,115,255,246,202,39,62,241,87,143,191,248,
141,175,61,154,199,251,147,121,190,63,174,61,222,115,92,219,1,232,1,56,8,224,46,0,111,191,225,134,27,191,251,254,251,127,228,59,191,247,238,119,221,122,236,216,29,203,203,75,189,133,201,95,131,109,99,
115,192,199,143,159,216,248,242,83,79,188,248,208,67,159,122,230,252,249,87,254,11,192,87,1,60,15,224,92,158,235,55,122,68,214,118,4,213,2,176,4,224,0,128,155,1,220,6,224,150,110,111,233,166,99,111,187,
251,246,163,183,223,122,221,202,202,174,222,222,189,203,237,110,167,77,204,76,139,240,80,223,35,16,17,15,71,99,190,114,101,99,124,245,234,250,224,228,215,95,188,120,252,185,167,190,62,28,108,158,1,112,
42,39,119,78,3,248,102,142,209,178,185,60,238,14,124,7,151,227,131,221,0,246,1,184,30,192,126,0,43,0,250,249,103,45,124,235,30,236,250,186,209,141,92,168,67,76,58,121,174,2,184,4,224,66,158,218,173,229,
159,249,237,92,100,167,133,226,114,97,119,114,188,208,18,153,198,66,1,154,43,64,145,133,101,121,92,31,229,127,251,197,240,44,182,197,182,216,22,219,98,91,108,139,109,177,45,182,197,182,216,22,219,98,91,
108,139,173,233,246,191,132,220,95,152,231,186,56,246,0,0,0,0,73,69,78,68,174,66,96,130,0,0};

const char* FileDropTargetComponent::iPhone_blank_8_png = (const char*) resource_FileDropTargetComponent_iPhone_blank_8_png;
const int FileDropTargetComponent::iPhone_blank_8_pngSize = 11669;

// JUCER_RESOURCE: stop_png, 774, "C:\stop.png"
static const unsigned char resource_FileDropTargetComponent_stop_png[] = { 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,0,16,0,0,0,16,8,6,0,0,0,31,243,255,97,0,0,0,1,115,82,71,66,0,174,206,28,233,
0,0,0,6,98,75,71,68,0,255,0,255,0,255,160,189,167,147,0,0,0,9,112,72,89,115,0,0,11,19,0,0,11,19,1,0,154,156,24,0,0,0,7,116,73,77,69,7,216,6,8,17,57,43,199,145,84,16,0,0,2,134,73,68,65,84,56,203,165,147,
79,72,147,97,28,199,63,239,191,253,121,55,183,193,112,145,153,14,212,156,30,194,203,12,211,163,142,236,224,37,81,233,96,231,232,84,120,242,110,135,232,222,57,161,196,192,136,32,164,225,37,154,132,14,44,
145,156,174,13,196,84,168,92,77,167,203,189,127,59,180,119,24,148,151,30,248,93,158,231,247,249,60,240,60,223,31,252,231,18,254,182,249,20,252,42,244,43,16,3,208,97,163,12,11,55,225,232,76,193,99,16,195,
48,17,233,237,157,60,55,56,24,84,59,59,65,16,40,175,175,243,101,126,254,224,107,42,117,191,0,15,111,129,229,48,210,105,56,34,8,79,162,195,195,119,235,19,9,143,28,8,44,10,48,107,235,250,59,81,150,5,127,
91,91,171,55,16,24,48,50,153,88,2,158,191,0,27,64,118,4,97,152,136,116,117,141,137,178,92,60,94,93,29,107,159,158,126,237,156,229,198,199,67,82,125,125,90,241,249,90,35,93,93,163,230,251,247,43,192,3,
0,17,96,6,252,170,162,76,74,110,55,165,108,118,244,15,120,104,40,36,251,124,73,187,88,108,173,236,238,102,37,183,27,85,81,38,103,192,95,19,168,208,239,81,213,224,113,46,151,234,94,89,73,58,240,199,120,
60,36,185,92,73,251,199,143,248,207,108,54,125,180,189,125,229,56,159,95,244,168,106,80,133,254,154,192,5,29,104,26,166,166,45,58,240,135,11,23,66,138,97,36,237,189,189,120,101,99,35,93,222,219,75,244,
108,110,22,205,74,37,133,166,253,102,156,55,16,0,76,19,81,81,0,88,109,110,14,169,117,117,73,69,146,226,70,169,148,214,138,197,68,252,243,231,98,245,70,27,211,172,125,159,8,96,64,6,64,22,197,190,116,67,
67,200,19,8,36,93,126,127,28,65,72,27,229,114,226,114,21,118,122,78,51,34,64,25,22,12,211,60,84,36,169,215,235,245,46,185,84,53,142,36,165,205,147,147,68,44,159,175,193,203,231,207,15,40,146,212,103,152,
230,97,25,22,106,130,17,56,170,88,214,148,165,235,136,130,112,73,183,172,252,246,254,254,181,150,181,53,7,22,151,99,177,235,94,183,251,153,173,235,84,44,107,106,164,154,202,90,18,31,129,212,38,203,179,
245,225,240,13,53,26,69,10,6,151,4,72,1,182,5,189,214,193,65,79,121,107,139,111,133,194,220,39,195,24,189,13,230,31,73,124,5,246,75,203,122,219,164,105,145,136,97,180,123,35,145,168,228,243,93,21,92,174,
171,150,174,95,252,158,203,157,188,41,20,102,238,24,198,189,57,56,252,215,48,121,128,166,70,65,232,24,175,171,235,110,9,135,27,1,242,133,194,206,116,169,180,188,99,219,25,96,27,56,57,107,26,69,192,93,
45,39,234,6,80,169,150,117,186,249,23,156,255,3,31,214,189,185,222,0,0,0,0,73,69,78,68,174,66,96,130,0,0};

const char* FileDropTargetComponent::stop_png = (const char*) resource_FileDropTargetComponent_stop_png;
const int FileDropTargetComponent::stop_pngSize = 774;

// JUCER_RESOURCE: blank_png, 204, "C:\blank.png"
static const unsigned char resource_FileDropTargetComponent_blank_png[] = { 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,0,64,0,0,0,64,8,6,0,0,0,170,105,113,222,0,0,0,1,115,82,71,66,0,174,206,28,
233,0,0,0,6,98,75,71,68,0,255,0,255,0,255,160,189,167,147,0,0,0,9,112,72,89,115,0,0,11,19,0,0,11,19,1,0,154,156,24,0,0,0,7,116,73,77,69,7,216,6,9,10,0,49,156,184,11,36,0,0,0,25,116,69,88,116,67,111,109,
109,101,110,116,0,67,114,101,97,116,101,100,32,119,105,116,104,32,71,73,77,80,87,129,14,23,0,0,0,39,73,68,65,84,120,218,237,193,1,13,0,0,0,194,160,247,79,109,14,55,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,
119,3,64,64,0,1,175,122,14,232,0,0,0,0,73,69,78,68,174,66,96,130,0,0};

const char* FileDropTargetComponent::blank_png = (const char*) resource_FileDropTargetComponent_blank_png;
const int FileDropTargetComponent::blank_pngSize = 204;
